package com.xique.door.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xique.door.bean.domain.Elevator;
import com.xique.door.bean.domain.ElevatorCommunityInfo;
import com.xique.door.bean.search.ElevatorListSearch;
import com.xique.door.bean.vo.elevator.ElevatorCountInAreaStatisticVO;
import com.xique.door.bean.vo.elevator.ElevatorGeneralVO;
import com.xique.door.bean.vo.elevator.ElevatorInfoListWebVO;
import com.xique.door.bean.vo.elevator.ElevatorServiceInfoStatisticVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 电梯设备Mapper接口
 *
 * @author caogq
 * @date 2021-10-08
 */
@Repository
public interface ElevatorMapper  extends BaseMapper<Elevator>
{
    /**
     * 查询电梯设备
     *
     * @param id 电梯设备ID
     * @return 电梯设备
     */
    public Elevator selectElevatorById(Long id);

    /**
     * 查询电梯设备列表
     *
     * @param elevator 电梯设备
     * @return 电梯设备集合
     */
    public List<Elevator> selectElevatorList(Elevator elevator);

    /**
     * 查询同步电梯信息
     * @author shd
     * @date 2022/3/29 14:13
     * @param elevator
     * @return java.util.List<com.xique.door.bean.domain.Elevator>
     */
    List<Elevator> selectElevatorTaskList(Elevator elevator);

    /**
     * 根据条件查询电梯
     * @author shd
     * @date 2021/10/29 10:53
     * @param search
     * @return java.util.List<com.jzy.web.elevator.bean.vo.ElevatorInfoListWebVO>
     */
    List<ElevatorInfoListWebVO> selectElevatorInfoList(ElevatorListSearch search);

    /**
     * 新增电梯设备
     *
     * @param elevator 电梯设备
     * @return 结果
     */
    public int insertElevator(Elevator elevator);

    /**
     * 修改电梯设备
     *
     * @param elevator 电梯设备
     * @return 结果
     */
    public int updateElevator(Elevator elevator);

    /**
     * 删除电梯设备
     *
     * @param id 电梯设备ID
     * @return 结果
     */
    public int deleteElevatorById(Long id);

    /**
     * 批量删除电梯设备
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteElevatorByIds(String[] ids);

    /**
     * 获取项目信息
     * @author shd
     * @date 2021/10/15 14:39
     * @param parkIds
     * @return java.util.List<com.jzy.oms.community.elevator.bean.domain.ElevatorCommunityInfo>
     */
    List<ElevatorCommunityInfo> selectElevatorCommunityInfoByParkIds(List<Long> parkIds);

    /**
     * 根据内容搜索项目
     * @author shd
     * @date 2021/10/29 10:19
     * @param content
     * @return java.util.List<com.jzy.oms.community.elevator.bean.domain.ElevatorCommunityInfo>
     */
    List<ElevatorCommunityInfo> selectElevatorCommunityInfoBySearch(@Param("content") String content);

    /**
     * 获取项目信息
     * @author shd
     * @date 2021/10/15 14:39
     * @param parkId
     * @return java.util.List<com.jzy.oms.community.elevator.bean.domain.ElevatorCommunityInfo>
     */
    ElevatorCommunityInfo selectElevatorCommunityInfoByParkId(Long parkId);

    /**
     * 根据地区获取项目信息
     * @author shd
     * @date 2021/10/22 13:35
     * @param code
     * @return java.util.List<com.jzy.oms.community.elevator.bean.domain.ElevatorCommunityInfo>
     */
    List<Elevator> selectElevatorByAddressCode(Long code);

    /**
     * 查询电梯数量
     * @author shd
     * @date 2021/10/18 17:19
     * @param parkId
     * @return int
     */
    int selectElevatorCountByParkId(Long parkId);

    /**
     * 根据地区统计电梯数量
     * @author shd
     * @date 2021/10/25 14:29
     * @param code
     * @return int
     */
    int selectElevatorCountByAddressCode(Long code);

    /**
     * 根据地区编号统计电梯数
     * @author shd
     * @date 2021/10/26 15:01
     * @param list
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorCountInAreaStatisticVO>
     */
    List<ElevatorCountInAreaStatisticVO> selectElevatorCountByAddressCodes(@Param("list") List<String> list, @Param("level") int level);

    /**
     * 服务开通信息统计
     * @author shd
     * @date 2021/10/21 9:52
     * @param parkId
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorServiceInfoStatisticVO>
     */
    ElevatorServiceInfoStatisticVO selectElevatorServiceInfoCountByParkId(Long parkId);

    /**
     * 服务开通信息统计
     * @author shd
     * @date 2021/10/21 9:52
     * @param code
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorServiceInfoStatisticVO>
     */
    ElevatorServiceInfoStatisticVO selectElevatorServiceInfoCountByAddressCode(Long code);

    /**
     * 电梯安全性排行
     * @author shd
     * @date 2021/10/21 10:21
     * @param code
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    List<String> selectElevatorSecurityRankingByAddressCode(Long code);

    /**
     * 根据地区总体概况
     * @author shd
     * @date 2021/10/25 14:10
     * @param code
     * @return com.jzy.web.elevator.bean.vo.ElevatorGeneralVO
     */
    ElevatorGeneralVO selectElevatorGeneralByAddressCode(Long code);
}
